Distributed file systems offer many compelling advantages in establishing high performance computing environments. One example is the ability to easily expand, even at large scale. An example distributed file system is one that is distributed across multiple nodes in a cluster of nodes. An individual node can encompass a set of storage drives capable of storing data accessible by clients of the clusters of nodes. Distributed file system can support connections from clients using multiple different network protocols. One example protocol is Server Message Block (“SMB”). The SMB protocol provides for clients to subscribe for change notify events, whereby the client can request that any changes to a file and/or directory provide a notification to the client from the server.
In large scale distributed file systems, scaling to hundreds of nodes, many different clients can be connected to the distributed file system performing tasks that can trigger change notify events under the SMB protocol. In addition, for some events, for example a write, a single large write can get split into multiple chunks of smaller writers when processed by the file system kernel. In many file systems, an inode exists for a file that maps the chunks of data that together comprise the entirety of the file. Thus, when a large write occurs, multiple chunks may get written to accomplish the write if the write size far exceeds the file system chunk size. Each kernel write targeted to individual chunks of data can trigger SMB change notify events for a single write event to a file. In the event the kernel generates a large number of events in short periods of times, these change notify requests can overflow buffers designed to process them, often flooding the buffer with multiple chunk writes for a single write event. Processing these redundant events and passing them to a client that is registered to the change notify event can cause waste storage, compute and network resources and could lead to process failure in some examples. Thus, there exists a need to limit the number of change notifications that are processed and/or sent to a client.